<?php

declare(strict_types=1);

namespace app\admin\controller;

use think\Request;
use think\facade\View;
use think\facade\Db;

class category
{
    /**
     * 显示资源列表
     *
     * @return \think\Response
     */
    public function index()
    {
        return View('index');
    }

    public function getCats()
    {
        $cats = Db::name('cat')->select()->toArray();
        $cats = $this->tree($cats);
        // dump($data);die;
        return json(['code' => 0, 'data' => $cats]); // 前端要求,必须按照code=0 的这种格式写
    }

    /**
     * 显示创建资源表单页.
     *
     * @return \think\Response
     */
    public function create()
    {
        $cats = Db::name('cat')->select()->toArray();
        $cats = $this->tree($cats);
        return View::fetch('add', ['cats' => $cats]);
    }

    /**
     * 多级分类
     */
    public function tree($data, $pid = 0, $level = 0)
    {
        static $arr = [];
        foreach ($data as $k => $v) {
            if ($v['pid'] == $pid) {
                $v['cat_name'] = str_repeat('|----', $level) . $v['cat_name'];
                $arr[] = $v;
                unset($data[$k]);
                $this->tree($data, $v['id'], $level + 1);
            }
        }
        return $arr;
    }

    /**
     * 保存新建的资源
     *
     * @param  \think\Request  $request
     * @return \think\Response
     */
    public function save(Request $request)
    {
        $data = $request->except(['fileselect']);
        // dump('save data = ',$data); die;
        $res = Db::name('cat')->insert($data);
        if ($res) {
            return json(['status' => 'success', 'msg' => '上传成功']);
        } else {
            return json(['status' => 'fail', 'msg' => '上传失败']);
        }
    }

    /**
     * 显示指定的资源
     *
     * @param  int  $id
     * @return \think\Response
     */
    public function read($id)
    {
        //
    }

    /**
     * 显示编辑资源表单页.
     *
     * @param  int  $id
     * @return \think\Response
     */
    public function edit($id)
    {
        //
    }

    /**
     * 保存更新的资源
     *
     * @param  \think\Request  $request
     * @param  int  $id
     * @return \think\Response
     */
    public function update(Request $request, $id)
    {
        //
    }

    /**
     * 删除指定资源
     *
     * @param  int  $id
     * @return \think\Response
     */
    public function delete($id)
    {
        //
    }

    /**
     * 文件上传 本地存储
     */
    public function upload(Request $request)
    {
        // 获取表单上传文件 例如上传了001.jpg
        $file = $request->file('file');
        // 上传到本地服务器
        $savename = \think\facade\Filesystem::putFile('category', $file, 'md5');
        return json(['status' => 'success', 'cat_img' => '/storage/' . $savename]);
    }
}
